****************************
* LATEST PRINT BLOCK ROUTINE *
******************************
ORIGIN EQU $800 ; DEFINES MEMORY START
AHI EQU ORIGIN
ALO EQU ORIGIN+$100
TEM EQU ORIGIN+$C0
TEMX EQU TEM+1
TEMY EQU TEM+2
AVEH EQU $F9 
XPOS EQU $FA
YTOP EQU $FB
YBOT EQU $FC
CHNUM EQU $FD
WIDTH EQU $EC
COUNT EQU $ED
TABL EQU ORIGIN+$300
ERFLG EQU ALO+$D4
XMAX EQU $FE
COLFLG EQU $E3
TEMAC EQU $EB
ACT1 EQU ALO+$C2  
RNUM EQU $8C9
RNDL EQU $4E
CHFIG EQU $6F9D
*****************************
*
*
 ORG ORIGIN+$200
*
*
****************************
PAGEONE LDY YTOP 
LOOKUP LDA AHI,Y
 STA ADDR+2
 STA ADDR+5
 LDA ALO,Y
 STA ADDR+1
 STA ADDR+4
 LDA WIDTH
 STA COUNT
 LDX XPOS
TABLER LDA $FFFF
 CPX #40 
 BCS SKDR
 CPY #191
 BCS SKDR
ADDR EOR $2000,X
 STA $2000,X
SKDR INC TABLER+1 
 BNE NEXT
 INC TABLER+2
NEXT INX
 DEC COUNT
 BNE TABLER
INCRY INY 
 CPY YBOT       
 BNE LOOKUP
 RTS
***************************
**  FIGURE PRINTER       **
*************************** 
*
* ENTER WITH CHAR.NUM. IN ACC.,
* X POS IN X REG. AND Y POS IN Y REG.
*
ERASEOLD STA TEMAC 
 LDA #$80
 STA ERFLG
 JMP PRINT   
PRINTNEW STA TEMAC 
 LDA #0
 STA ERFLG ;ERASE IF BIT 7 IN ERFLG=1 PRINT IF 0
PRINT STX XPOS
 STY YTOP
LT1 LDA TEMAC
 JSR CHFIG
SHIFT ASL A 
 TAY
 LDA TABL,Y ;GET ADDR OF CHR.
 STA WIDTHSET+1
 CLC
 ADC #1
 STA HEIGHTSET+1
 ADC #1
 STA TABLER+1
 INY
 LDA TABL,Y
 STA WIDTHSET+2
 STA TABLER+2
 STA HEIGHTSET+2
WIDTHSET LDA $7000 ;CHANGEABLE ADDR
 BEQ OOPS
 CMP #15
 BCS OOPS
 STA WIDTH
 BIT ERFLG
 BMI HEIGHTSET
 BIT ACT1 ;CHECK FACING
 BPL RTFACE
 LDA XPOS
 TAX      
 JMP HEIGHTSET 
*
RTFACE CLC 
 ADC XPOS
 TAX       
 DEX      
HEIGHTSET LDA $7001 ;CHANGEABLE
 BEQ OOPS
 CMP #80 
 BCS OOPS
 STA AVEH
 CLC
 ADC YTOP
 STA YBOT
 BIT ERFLG 
 BMI JSPR
 CLC
 LSR AVEH ;GETS AVERAGE HEIGHT
 CLC
 LDA AVEH
 ADC YTOP
 TAY      ;NOW ITS MIDDLE Y POS
COLCHK BIT ERFLG
 BMI JSPR
 CPX #40
 BCS JSPR
LOOK LDA ALO,Y
 STA AD+1
 LDA AHI,Y
 STA AD+2
AD LDA $2000,X
 BEQ NOCOL
 BIT ERFLG ;USE BIT 6 FOR BR.FLG
 BVS YESCOL
 LDY YTOP
 LDA #$40
 STA ERFLG
 BNE LOOK
YESCOL LDA #$C0
 STA COLFLG
 BNE JSPR
NOCOL LDA #0
 STA COLFLG
JSPR JMP PAGEONE 
OOPS RTS
*
*
WRAPCOL LDA COL
 AND #7
 STA COL
 LDA ROW
 RTS
*
******************************
ROW EQU $8CC
COL EQU $8CD
****************************
*
 ORG $C00
*
SETRNUM JSR WRAPCOL 
 AND #7
 STA ROW
 ASL A
 ASL A
 ASL A
 CLC
 ADC COL
 AND#$7F
 STA RNUM
 TAX
 RTS
*
***************************
*
* PSUEDO RANDOM SEQUENCER
*
****************************
*
 ORG $C18 
*
*
RANDOM LDA RNDL 
 AND #3   
 BEQ EONE  
 CMP #3   
 BEQ EONE  
ZER LDA #$7F  
 AND RNDL 
 BNE OUT
EONE LDA #$80 
 ORA RNDL 
OUT STA RNDL 
 LSR RNDL 
 RTS
*
*
